package com.kcht.itsed.mws.alefacade.stdfacade;

import com.kcht.itsed.mws.alefacade.exceptions.*;
import com.kcht.itsed.mws.alemodel.CCParameterList;
import com.kcht.itsed.mws.alemodel.CCReports;
import com.kcht.itsed.mws.alemodel.CCSpec;

import java.util.List;

public interface ALECC extends ALECC_EPCCache,ALECC_AssociationTable,ALECC_RNG,ALEIntf{
	
	void define(String specName, CCSpec spec)throws DuplicateNameException ,CCSpecValidationException;

	void undefine(String specName)throws NoSuchNameException;

	CCSpec getCCSpec(String specName)throws NoSuchNameException;

	List<String> getCCSpecNames();

	void subscribe(String specName, String notificationURI)throws NoSuchNameException, InvalidURIException ,DuplicateSubscriptionException ,ParameterForbiddenException;

	void unsubscribe(String specName, String notificationURI)throws NoSuchNameException ,NoSuchSubscriberException, InvalidURIException;

	CCReports poll(String specName, CCParameterList params)throws NoSuchNameException, ParameterException;
	
	CCReports immediate(CCSpec spec)throws CCSpecValidationException, ParameterForbiddenException;
	
	List<String> getSubscribers(String specName)throws NoSuchNameException;
	
	
}
